perm filename BK[P,JRA]3 blob
sn#502219 filedate 1980-03-01 generic text, type C, neo UTF8
COMMENT ā VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00007 00003
C00010 00004
C00012 ENDMK
Cā;
rough outline of the lisp book
This book will be a lisp programming text that stresses style, quality,
understanding of abstraction, as well as thoughtfulness. Though it is a
programming text, it is NOT just a manual. A major difficulty in LISP
programming manuals has been their inability to communicate style as well
as language mechanics. The effect is to give a very "flat" picture of the
language.
Besides (or instead of?) the usual program structuring admonitions, a LISP
text must also convey an appreciation for appropriate abstraction. The
burden here is greater than in other languages: LISP gives more data
structuring tools than other languages; as a result the power, and its
possible misuse, are greater in LISP than in less endowed languages. For
example, LISP supplies basic constructors, selectors, and recognizers for
implementing the user's abstractions, yet the existing texts do not make
it clear that the user must supply a discipline to their usage. A lack of
such care leads to obscure programming.
Furthermore, LISP supplies many programming tools and techniques that are
not available with a traditional programming language. These novelties
range from language flexibilities --made possible by the fluidity of the
language (program/data duality) and its runtime system (property-lists),
to economies in programming effort --made possible by placing the language
in a interactive setting. All of these facets must be explained if the
full power of the language is to be exploited. Thus, this LISP text is a
part of combined system: an inexpensive personal LISP machine in
conjunction with a programming text. Therefore the book will contain many
examples and exercises dealing with the application of the particular
tools that the system supplies. Furthermore, since the machine will "know"
what exercises the novice is attempting, intelligent aid can be given, by
applying some of the AI techniques that (perhaps) motivated the novice's
interest in LISP to begin with; this way the user's interest can be
sustained even while they are learning the mechanics of the language.
The LISP machine should not be thought of as simply a teaching aid, to be
used in learning LISP, and then recycled. Rather, the LISP vehicle is
basis for developing software, just like any other language (or system
like UCSD Pascal). A difference (and advantage) with LISP is that the
range of application available to the LISP person is much greater than
with a traditional language; but note: it is not that one can do in LISP
some computation that CANNOT be done in another, it is only that complex
programming is often EASIER and faster in LISP.
With this background, a brief outline follows. Remember, that the book is
to be read in conjunction with interaction on the machine. It will not
require a teacher however; an "electronic" teacher will be included in the
system.
what is lisp
description of history, applications areas
relate traditional view of LISP with the modern approach
system supplies canned games for the user (e.g eliza
adventure, macsyma-ish, ...)
using the system
as a calculator
simple arithmetic, string, and array facilities
as an online teacher
hand-holding through simple programs using above
facilities; n.b. this is in list notation
(system may present completed program segments for the
user to run, for example)
since the system knows the context in which the person is working,
it may apply AI techniques ("expert systems") to comment on the
user's performance. This technique can be used throughout the
introductory material, and a question-answerer will be available
at all times for user queries.
abstraction
abstraction in data
the concept: an example
its implementation in above
its implementation as list-structure
abstraction in program
idea of control
recursion
iteration
backtrack[?]
relate these concepts to those of structured programming
evaluation
lisp as a machine
call-by-value
less explict control mechanisms
call-by-pattern-match
property-lists
data-driven programming
intelligent systtems
data bases
smalltalk in lisp
program as data
role of editor
debugger
compiler[?]
data as program
functional args[?]
special lisp-based languages as solutions to problems
complex problems are seldom answered by a
simple solution; they can be couched as
read-eval-print for higher-level languages
written in lisp
construction of evaluators
recursive
non-recursive
lisp as a systems implementation language
lisp input/output
streams
data base
parser/unparsers
general overview of lisp
its culture and future
relation to traditional languages
comparison to ADA and other Algol-like languages
introduction to ai
applications
business
medicine
industry
education
leisure
system description (manuals)
editor
debugger
language features
input/output
*****
important topics to be worked in:
functions as args
scoping
debugging
macros